package main

// go语言。题解给的答案是 计数 magazine, 我的第一想法是 计数 ransomNote 因为 ransomNote 比较短，
// 计数完成后，遍历，只要最后符合了，就不需要继续遍历下去了。

// 计数排序
func canConstruct(ransomNote string, magazine string) bool {
	// 赎金信长度
	n := len(ransomNote)
	// 赎金信计数
	ran := make([]int, 26)
	for i := 0; i < n; i++ {
		ran[ransomNote[i]-'a'] += 1
	}
	// 遍历 magazine 判断
	for i := 0; i < len(magazine); i++ {
		if ran[magazine[i]-'a'] > 0 {
			ran[magazine[i]-'a'] -= 1
			n -= 1
		}
		if n == 0 {
			return true
		}
	}
	return false
}
